package bishi.day23_5_20;

import java.util.*;

/**
 * 计算字符串的编辑距离
 *
 * @author 是阿秋啊
 * @date 2022/05/22 16:38
 **/

/*
 * 解题思路
 * 设Ai为字符串A(a1a2a3 … am)的前i个字符（即为a1,a2,a3 … ai）
 *     * 设Bj为字符串B(b1b2b3 … bn)的前j个字符（即为b1,b2,b3 … bj）
 *     * 设 L(i,j)为使两个字符串和Ai和Bj相等的最小操作次数。
 *     * 当ai==bj时 显然 L(i,j) = L(i-1,j-1)
 *     * 当ai!=bj时
 *     *  若将它们修改为相等，则对两个字符串至少还要操作L(i-1,j-1)次
 *     *  若删除ai或在bj后添加ai，则对两个字符串至少还要操作L(i-1,j)次
 *     *  若删除bj或在ai后添加bj，则对两个字符串至少还要操作L(i,j-1)次
 *     *  此时L(i,j) = min( L(i-1,j-1), L(i-1,j), L(i,j-1) ) + 1
 *     * 显然，L(i,0)=i，L(0,j)=j, 再利用上述的递推公式，可以直接计算出L(i,j)值。
 */
public class Levenshtein {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str1 = sc.nextLine();
            String str2 = sc.nextLine();
            int len1 = str1.length();
            int len2 = str2.length();
            int[][] ret = new int[len1 + 1][len2 + 1];
            for (int i = 0; i <= len1; i++) {
                ret[i][0] = i;
            }
            for (int i = 0; i <= len2; i++) {
                ret[0][i] = i;
            }
            for (int i = 1; i <= len1; i++) {
                for (int j = 1; j <= len2; j++) {
                    if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
                        ret[i][j] = ret[i - 1][j - 1];
                    } else {
                        ret[i][j] = Math.min(Math.min(ret[i - 1][j], ret[i][j - 1]), ret[i - 1][j - 1]) + 1;
                    }
                }
            }
            System.out.println(ret[len1][len2]);
        }
    }
}